Report missing link or selection of element template
The below code iterates over all the feature symbology's used by current DGN file and finds the missing default or 3D template.
//Required References
using Bentley.CifNET.ContentManagementModel;
using Bentley.CifNET.GeometryModel.ContentManagement;
using System.Diagnostics;
public void ReportMissingElementTemplatesFromFS()
{
//Get Object space
Bentley.CifNET.CadSystem.IObjectSpaceManager objectSpaceManager = Bentley.CifNET.ServiceManager.Instance.GetService<Bentley.CifNET.CadSystem.IObjectSpaceManager>();
Bentley.CifNET.Objects.IObjectSpace objectSpace = objectSpaceManager.ObjectSpace;
if (objectSpace == null) return;
//Get or create ContentManagementModel
Bentley.CifNET.ContentManagementModel.ContentManagementModel cmm = Bentley.CifNET.ContentManagementModel.ContentManagementModel.GetContentManagementModelAndCreateIfDontExist(objectSpace);
if (cmm == null) return;
//Get all feature symbology's
Bentley.CifNET.ContentManagementModel.GeometryAspectNameSet geometryAspectNameSet = cmm.GeometryAspectNameSet;
Trace.WriteLine("Feature Symbology's having missing element templates: ");
foreach (GeometryAspect geometryAspect in geometryAspectNameSet)
{
GeometricGeometryAspect geometricGeometryAspect = geometryAspect as GeometricGeometryAspect;
if (geometricGeometryAspect == null) continue;
//Get deafault template and 3D template for current feature symbology
Bentley.CifNET.Model.ElementTemplate defaultElementTemplate = geometricGeometryAspect.DefaultElementTemplate;
Bentley.CifNET.Model.ElementTemplate elementTemplate3D = geometricGeometryAspect.ThreeDElementTemplate;
if (defaultElementTemplate == null || elementTemplate3D == null)
{
//Report FS name having either default or 3D template missing
Trace.WriteLine(geometryAspect.Name.ToString());
}
}
}
Output